home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / ddeml.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-02-09  |  24.2 KB  |  757 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Runtime Library                          }
  5. {       Windows 32bit API Interface Unit                }
  6. {                                                       }
  7. {       Copyright (c) 1992,98 Borland International     }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit Ddeml;
  12.  
  13. {$WEAKPACKAGEUNIT}
  14.  
  15. {$HPPEMIT '#include <ddeml.h>'}
  16.  
  17. interface
  18.  
  19. uses Windows;
  20.  
  21. type
  22.   HConvList = Longint;
  23.   HConv = Longint;
  24.   HSz = Longint;
  25.   HDDEData = Longint;
  26.  
  27. type
  28.   { the following structure is for use with xtyp_WildConnect processing. }
  29.   PHSZPair = ^THSZPair;
  30.   {$EXTERNALSYM tagHSZPAIR}
  31.   tagHSZPAIR = record
  32.     hszSvc: HSZ;
  33.     hszTopic: HSZ;
  34.   end;
  35.   THSZPair = tagHSZPAIR;
  36.   {$EXTERNALSYM HSZPAIR}
  37.   HSZPAIR = tagHSZPAIR;
  38.  
  39.   { The following structure is used by DdeConnect() and DdeConnectList()
  40.     and by xtyp_Connect and xtyp_WildConnect callbacks. }
  41.  
  42.   PConvContext = ^TConvContext;
  43.   {$EXTERNALSYM tagCONVCONTEXT}
  44.   tagCONVCONTEXT = record
  45.     cb: UINT;            { set to sizeof(ConvCOnTEXT) }
  46.     wFlags: UINT;        { none currently defined. }
  47.     wCountryID: UINT;    { country code for topic/item strings used. }
  48.     iCodePage: Integer;  { codepage used for topic/item strings. }
  49.     dwLangID: DWORD;     { language ID for topic/item strings. }
  50.     dwSecurity: DWORD;   { Private security code. }
  51.     qos: TSecurityQualityOfService;  { used to support client impersonation }
  52.   end;
  53.   TConvContext = tagCONVCONTEXT;
  54.   {$EXTERNALSYM CONVCONTEXT}
  55.   CONVCONTEXT = tagCONVCONTEXT;
  56.  
  57. { The following structure is used by DdeQueryConvInfo(): }
  58.  
  59.   PConvInfo = ^TConvInfo;
  60.   {$EXTERNALSYM tagCONVINFO}
  61.   tagCONVINFO = record
  62.     cb: DWORD;            { sizeof(CONVINFO)  }
  63.     hUser: DWORD;         { user specified field  }
  64.     hConvPartner: HConv;    { hConv on other end or 0 if non-ddemgr partner  }
  65.     hszSvcPartner: HSz;     { app name of partner if obtainable  }
  66.     hszServiceReq: HSz;     { AppName requested for connection  }
  67.     hszTopic: HSz;          { Topic name for conversation  }
  68.     hszItem: HSz;           { transaction item name or NULL if quiescent  }
  69.     wFmt: UINT;             { transaction format or NULL if quiescent  }
  70.     wType: UINT;            { XTYP_ for current transaction  }
  71.     wStatus: UINT;          { ST_ constant for current conversation  }
  72.     wConvst: UINT;          { XST_ constant for current transaction  }
  73.     wLastError: UINT;       { last transaction error.  }
  74.     hConvList: HConvList;   { parent hConvList if this conversation is in a list }
  75.     ConvCtxt: TConvContext; { conversation context }
  76.     hwnd: HWND;             { window handle for this conversation }
  77.     hwndPartner: HWND;      { partner window handle for this conversation }
  78.   end;
  79.   TConvInfo = tagCONVINFO;
  80.   {$EXTERNALSYM CONVINFO}
  81.   CONVINFO = tagCONVINFO;
  82.  
  83. const
  84.   { conversation states (usState) }
  85.  
  86.   {$EXTERNALSYM XST_NULL}
  87.   XST_NULL = 0;                 { quiescent states }
  88.   {$EXTERNALSYM XST_INCOMPLETE}
  89.   XST_INCOMPLETE = 1;
  90.   {$EXTERNALSYM XST_CONNECTED}
  91.   XST_CONNECTED = 2;
  92.   {$EXTERNALSYM XST_INIT1}
  93.   XST_INIT1 = 3;                { mid-initiation states }
  94.   {$EXTERNALSYM XST_INIT2}
  95.   XST_INIT2 = 4;
  96.   {$EXTERNALSYM XST_REQSENT}
  97.   XST_REQSENT = 5;              { active conversation states }
  98.   {$EXTERNALSYM XST_DATARCVD}
  99.   XST_DATARCVD = 6;
  100.   {$EXTERNALSYM XST_POKESENT}
  101.   XST_POKESENT = 7;
  102.   {$EXTERNALSYM XST_POKEACKRCVD}
  103.   XST_POKEACKRCVD = 8;
  104.   {$EXTERNALSYM XST_EXECSENT}
  105.   XST_EXECSENT = 9;
  106.   {$EXTERNALSYM XST_EXECACKRCVD}
  107.   XST_EXECACKRCVD = 10;
  108.   {$EXTERNALSYM XST_ADVSENT}
  109.   XST_ADVSENT = 11;
  110.   {$EXTERNALSYM XST_UNADVSENT}
  111.   XST_UNADVSENT = 12;
  112.   {$EXTERNALSYM XST_ADVACKRCVD}
  113.   XST_ADVACKRCVD = 13;
  114.   {$EXTERNALSYM XST_UNADVACKRCVD}
  115.   XST_UNADVACKRCVD = 14;
  116.   {$EXTERNALSYM XST_ADVDATASENT}
  117.   XST_ADVDATASENT = 15;
  118.   {$EXTERNALSYM XST_ADVDATAACKRCVD}
  119.   XST_ADVDATAACKRCVD = 16;
  120.  
  121.   { used in LOWORD(dwData1) of XTYP_ADVREQ callbacks... }
  122.  
  123.   {$EXTERNALSYM CADV_LATEACK}
  124.   CADV_LATEACK = $FFFF;
  125.  
  126.   { conversation status bits (fsStatus) }
  127.  
  128.   {$EXTERNALSYM ST_CONNECTED}
  129.   ST_CONNECTED = $0001;
  130.   {$EXTERNALSYM ST_ADVISE}
  131.   ST_ADVISE = $0002;
  132.   {$EXTERNALSYM ST_ISLOCAL}
  133.   ST_ISLOCAL = $0004;
  134.   {$EXTERNALSYM ST_BLOCKED}
  135.   ST_BLOCKED = $0008;
  136.   {$EXTERNALSYM ST_CLIENT}
  137.   ST_CLIENT = $0010;
  138.   {$EXTERNALSYM ST_TERMINATED}
  139.   ST_TERMINATED = $0020;
  140.   {$EXTERNALSYM ST_INLIST}
  141.   ST_INLIST = $0040;
  142.   {$EXTERNALSYM ST_BLOCKNEXT}
  143.   ST_BLOCKNEXT = $0080;
  144.   {$EXTERNALSYM ST_ISSELF}
  145.   ST_ISSELF = $0100;
  146.  
  147.   { DDE constants for wStatus field }
  148.  
  149.   {$EXTERNALSYM DDE_FACK}
  150.   DDE_FACK = $8000;
  151.   {$EXTERNALSYM DDE_FBUSY}
  152.   DDE_FBUSY = $4000;
  153.   {$EXTERNALSYM DDE_FDEFERUPD}
  154.   DDE_FDEFERUPD = $4000;
  155.   {$EXTERNALSYM DDE_FACKREQ}
  156.   DDE_FACKREQ = $8000;
  157.   {$EXTERNALSYM DDE_FRELEASE}
  158.   DDE_FRELEASE = $2000;
  159.   {$EXTERNALSYM DDE_FREQUESTED}
  160.   DDE_FREQUESTED = $1000;
  161.   {$EXTERNALSYM DDE_FAPPSTATUS}
  162.   DDE_FAPPSTATUS = $00ff;
  163.   {$EXTERNALSYM DDE_FNOTPROCESSED}
  164.   DDE_FNOTPROCESSED = $0000;
  165.  
  166.   {$EXTERNALSYM DDE_FACKRESERVED}
  167.   DDE_FACKRESERVED = $3ff0;
  168.   {$EXTERNALSYM DDE_FADVRESERVED}
  169.   DDE_FADVRESERVED = $3fff;
  170.   {$EXTERNALSYM DDE_FDATRESERVED}
  171.   DDE_FDATRESERVED = $4fff;
  172.   {$EXTERNALSYM DDE_FPOKRESERVED}
  173.   DDE_FPOKRESERVED = $dfff;
  174.  
  175.   { message filter hook types }
  176.  
  177.   {$EXTERNALSYM MSGF_DDEMGR}
  178.   MSGF_DDEMGR = $8001;
  179.  
  180.   { default codepage for windows & old DDE convs. }
  181.  
  182.   {$EXTERNALSYM CP_WINANSI}
  183.   CP_WINANSI = 1004;
  184.   {$EXTERNALSYM CP_WINUNICODE}
  185.   CP_WINUNICODE = 1200;
  186.  
  187.   {$EXTERNALSYM CP_WINNEUTRAL}
  188.     {$IFDEF UNICODE}
  189.     CP_WINNEUTRAL = CP_WINUNICODE;
  190.     {$ELSE}
  191.     CP_WINNEUTRAL = CP_WINANSI;
  192.     {$ENDIF}
  193.   { transaction types }
  194.  
  195.   {$EXTERNALSYM XTYPF_NOBLOCK}
  196.   XTYPF_NOBLOCK = $0002; { CBR_BLOCK will not work }
  197.   {$EXTERNALSYM XTYPF_NODATA}
  198.   XTYPF_NODATA = $0004;  { DDE_FDEFERUPD }
  199.   {$EXTERNALSYM XTYPF_ACKREQ}
  200.   XTYPF_ACKREQ = $0008;  { DDE_FACKREQ }
  201.  
  202.   {$EXTERNALSYM XCLASS_MASK}
  203.   XCLASS_MASK = $FC00;
  204.   {$EXTERNALSYM XCLASS_BOOL}
  205.   XCLASS_BOOL = $1000;
  206.   {$EXTERNALSYM XCLASS_DATA}
  207.   XCLASS_DATA = $2000;
  208.   {$EXTERNALSYM XCLASS_FLAGS}
  209.   XCLASS_FLAGS = $4000;
  210.   {$EXTERNALSYM XCLASS_NOTIFICATION}
  211.   XCLASS_NOTIFICATION = $8000;
  212.  
  213.   {$EXTERNALSYM XTYP_ERROR}
  214.   XTYP_ERROR = $0000 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  215.   {$EXTERNALSYM XTYP_ADVDATA}
  216.   XTYP_ADVDATA = $0010 or XCLASS_FLAGS;
  217.   {$EXTERNALSYM XTYP_ADVREQ}
  218.   XTYP_ADVREQ = $0020 or XCLASS_DATA or XTYPF_NOBLOCK;
  219.   {$EXTERNALSYM XTYP_ADVSTART}
  220.   XTYP_ADVSTART = $0030 or XCLASS_BOOL;
  221.   {$EXTERNALSYM XTYP_ADVSTOP}
  222.   XTYP_ADVSTOP = $0040 or XCLASS_NOTIFICATION;
  223.   {$EXTERNALSYM XTYP_EXECUTE}
  224.   XTYP_EXECUTE = $0050 or XCLASS_FLAGS;
  225.   {$EXTERNALSYM XTYP_CONNECT}
  226.   XTYP_CONNECT = $0060 or XCLASS_BOOL or XTYPF_NOBLOCK;
  227.   {$EXTERNALSYM XTYP_CONNECT_CONFIRM}
  228.   XTYP_CONNECT_CONFIRM = $0070 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  229.   {$EXTERNALSYM XTYP_XACT_COMPLETE}
  230.   XTYP_XACT_COMPLETE = $0080 or XCLASS_NOTIFICATION;
  231.   {$EXTERNALSYM XTYP_POKE}
  232.   XTYP_POKE = $0090 or XCLASS_FLAGS;
  233.   {$EXTERNALSYM XTYP_REGISTER}
  234.   XTYP_REGISTER = $00A0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  235.   {$EXTERNALSYM XTYP_REQUEST}
  236.   XTYP_REQUEST = $00B0 or XCLASS_DATA;
  237.   {$EXTERNALSYM XTYP_DISCONNECT}
  238.   XTYP_DISCONNECT = $00C0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  239.   {$EXTERNALSYM XTYP_UNREGISTER}
  240.   XTYP_UNREGISTER = $00D0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  241.   {$EXTERNALSYM XTYP_WILDCONNECT}
  242.   XTYP_WILDCONNECT = $00E0 or XCLASS_DATA or XTYPF_NOBLOCK;
  243.  
  244.   {$EXTERNALSYM XTYP_MASK}
  245.   XTYP_MASK = $00F0;
  246.   {$EXTERNALSYM XTYP_SHIFT}
  247.   XTYP_SHIFT = 4;  { shift to turn xtyp_ into an index }
  248.  
  249.   { Timeout constants }
  250.  
  251.   {$EXTERNALSYM TIMEOUT_ASYNC}
  252.   TIMEOUT_ASYNC =           -1;
  253.  
  254.   { Transaction ID constatnts }
  255.   {$EXTERNALSYM QID_SYNC}
  256.   QID_SYNC =                -1;
  257.  
  258.   { public strings used in DDE }
  259.  
  260.   {$EXTERNALSYM SZDDESYS_TOPIC}
  261.   SZDDESYS_TOPIC = 'System';
  262.   {$EXTERNALSYM SZDDESYS_ITEM_TOPICS}
  263.   SZDDESYS_ITEM_TOPICS = 'Topics';
  264.   {$EXTERNALSYM SZDDESYS_ITEM_SYSITEMS}
  265.   SZDDESYS_ITEM_SYSITEMS = 'SysItems';
  266.   {$EXTERNALSYM SZDDESYS_ITEM_RTNMSG}
  267.   SZDDESYS_ITEM_RTNMSG = 'ReturnMessage';
  268.   {$EXTERNALSYM SZDDESYS_ITEM_STATUS}
  269.   SZDDESYS_ITEM_STATUS = 'Status';
  270.   {$EXTERNALSYM SZDDESYS_ITEM_FORMATS}
  271.   SZDDESYS_ITEM_FORMATS = 'Formats';
  272.   {$EXTERNALSYM SZDDESYS_ITEM_HELP}
  273.   SZDDESYS_ITEM_HELP = 'Help';
  274.   {$EXTERNALSYM SZDDE_ITEM_ITEMLIST}
  275.   SZDDE_ITEM_ITEMLIST = 'TopicItemList';
  276.  
  277. type
  278.   { API entry points }
  279.   {$EXTERNALSYM PFNCALLBACK}
  280.   PFNCALLBACK = function (CallType, Fmt: UINT; Conv: HConv; hsz1, hsz2: HSZ;
  281.     Data: HDDEData; Data1, Data2: DWORD): HDDEData stdcall;
  282.   TFNCallback = PFNCALLBACK;
  283.  
  284. const
  285.   {$EXTERNALSYM CBR_BLOCK}
  286.   CBR_BLOCK = $FFFFFFFF;
  287.  
  288. { DLL registration functions }
  289.  
  290. {$EXTERNALSYM DdeInitializeA}
  291. function DdeInitializeA(var Inst: Longint; Callback: TFNCallback;
  292.   Cmd, Res: Longint): Longint; stdcall;
  293. {$EXTERNALSYM DdeInitializeW}
  294. function DdeInitializeW(var Inst: Longint; Callback: TFNCallback;
  295.   Cmd, Res: Longint): Longint; stdcall;
  296. {$EXTERNALSYM DdeInitialize}
  297. function DdeInitialize(var Inst: Longint; Callback: TFNCallback;
  298.   Cmd, Res: Longint): Longint; stdcall;
  299.  
  300. const
  301.   { Callback filter flags for use with standard apps. }
  302.  
  303.   {$EXTERNALSYM CBF_FAIL_SELFCONNECTIONS}
  304.   CBF_FAIL_SELFCONNECTIONS = $00001000;
  305.   {$EXTERNALSYM CBF_FAIL_CONNECTIONS}
  306.   CBF_FAIL_CONNECTIONS = $00002000;
  307.   {$EXTERNALSYM CBF_FAIL_ADVISES}
  308.   CBF_FAIL_ADVISES = $00004000;
  309.   {$EXTERNALSYM CBF_FAIL_EXECUTES}
  310.   CBF_FAIL_EXECUTES = $00008000;
  311.   {$EXTERNALSYM CBF_FAIL_POKES}
  312.   CBF_FAIL_POKES = $00010000;
  313.   {$EXTERNALSYM CBF_FAIL_REQUESTS}
  314.   CBF_FAIL_REQUESTS = $00020000;
  315.   {$EXTERNALSYM CBF_FAIL_ALLSVRXACTIONS}
  316.   CBF_FAIL_ALLSVRXACTIONS = $0003f000;
  317.  
  318.   {$EXTERNALSYM CBF_SKIP_CONNECT_CONFIRMS}
  319.   CBF_SKIP_CONNECT_CONFIRMS = $00040000;
  320.   {$EXTERNALSYM CBF_SKIP_REGISTRATIONS}
  321.   CBF_SKIP_REGISTRATIONS = $00080000;
  322.   {$EXTERNALSYM CBF_SKIP_UNREGISTRATIONS}
  323.   CBF_SKIP_UNREGISTRATIONS = $00100000;
  324.   {$EXTERNALSYM CBF_SKIP_DISCONNECTS}
  325.   CBF_SKIP_DISCONNECTS = $00200000;
  326.   {$EXTERNALSYM CBF_SKIP_ALLNOTIFICATIONS}
  327.   CBF_SKIP_ALLNOTIFICATIONS = $003c0000;
  328.  
  329.   { Application command flags }
  330.  
  331.   {$EXTERNALSYM APPCMD_CLIENTONLY}
  332.   APPCMD_CLIENTONLY = $00000010;
  333.   {$EXTERNALSYM APPCMD_FILTERINITS}
  334.   APPCMD_FILTERINITS = $00000020;
  335.   {$EXTERNALSYM APPCMD_MASK}
  336.   APPCMD_MASK = $00000FF0;
  337.  
  338.   { Application classification flags }
  339.  
  340.   {$EXTERNALSYM APPCLASS_STANDARD}
  341.   APPCLASS_STANDARD = $00000000;
  342.   {$EXTERNALSYM APPCLASS_MASK}
  343.   APPCLASS_MASK = $0000000F;
  344.  
  345. {$EXTERNALSYM DdeUninitialize}
  346. function DdeUninitialize(Inst: DWORD): BOOL; stdcall;
  347.  
  348. { conversation enumeration functions }
  349.  
  350. {$EXTERNALSYM DdeConnectList}
  351. function DdeConnectList(Inst: DWORD; Service, Topic: HSZ;
  352.   ConvList: HConvList; CC: PConvContext): HConvList; stdcall;
  353. {$EXTERNALSYM DdeQueryNextServer}
  354. function DdeQueryNextServer(ConvList: HConvList; ConvPrev: HConv): HConv; stdcall;
  355. {$EXTERNALSYM DdeDisconnectList}
  356. function DdeDisconnectList(ConvList: HConvList): BOOL; stdcall;
  357.  
  358. { conversation control functions }
  359.  
  360. {$EXTERNALSYM DdeConnect}
  361. function DdeConnect(Inst: DWORD; Service, Topic: HSZ;
  362.   CC: PConvContext): HConv; stdcall;
  363. {$EXTERNALSYM DdeDisconnect}
  364. function DdeDisconnect(Conv: HConv): BOOL; stdcall;
  365. {$EXTERNALSYM DdeReconnect}
  366. function DdeReconnect(Conv: HConv): HConv; stdcall;
  367.  
  368. {$EXTERNALSYM DdeQueryConvInfo}
  369. function DdeQueryConvInfo(Conv: HConv; Transaction: DWORD;
  370.  ConvInfo: PConvInfo): UINT; stdcall;
  371. {$EXTERNALSYM DdeSetUserHandle}
  372. function DdeSetUserHandle(Conv: HConv; ID, User: DWORD): BOOL; stdcall;
  373.  
  374. {$EXTERNALSYM DdeAbandonTransaction}
  375. function DdeAbandonTransaction(Inst: DWORD; Conv: HConv;
  376.   Transaction: DWORD): BOOL; stdcall;
  377.  
  378. { app server interface functions }
  379.  
  380. {$EXTERNALSYM DdePostAdvise}
  381. function DdePostAdvise(Inst: DWORD; Topic, Item: HSZ): BOOL; stdcall;
  382. {$EXTERNALSYM DdeEnableCallback}
  383. function DdeEnableCallback(Inst: DWORD; Conv: HConv; Cmd: UINT): BOOL; stdcall;
  384.  
  385. const
  386.   {$EXTERNALSYM EC_ENABLEALL}
  387.   EC_ENABLEALL = 0;
  388.   {$EXTERNALSYM EC_ENABLEONE}
  389.   EC_ENABLEONE = ST_BLOCKNEXT;
  390.   {$EXTERNALSYM EC_DISABLE}
  391.   EC_DISABLE = ST_BLOCKED;
  392.   {$EXTERNALSYM EC_QUERYWAITING}
  393.   EC_QUERYWAITING = 2;
  394.  
  395. {$EXTERNALSYM DdeNameService}
  396. function DdeNameService(Inst: DWORD; hsz1, hsz2: HSZ; Cmd: UINT): HDDEData; stdcall;
  397.  
  398. const
  399.   {$EXTERNALSYM DNS_REGISTER}
  400.   DNS_REGISTER = $0001;
  401.   {$EXTERNALSYM DNS_UNREGISTER}
  402.   DNS_UNREGISTER = $0002;
  403.   {$EXTERNALSYM DNS_FILTERON}
  404.   DNS_FILTERON = $0004;
  405.   {$EXTERNALSYM DNS_FILTEROFF}
  406.   DNS_FILTEROFF = $0008;
  407.  
  408. { app client interface functions }
  409.  
  410. {$EXTERNALSYM DdeClientTransaction}
  411. function DdeClientTransaction(Data: Pointer; DataLen: DWORD;
  412.   Conv: HConv; Item: HSZ; Fmt, DataType: UINT; Timeout: DWORD;
  413.   Result: PDWORD): HDDEData; stdcall;
  414.  
  415. { data transfer functions }
  416.  
  417. {$EXTERNALSYM DdeCreateDataHandle}
  418. function DdeCreateDataHandle(Inst: DWORD; Src: Pointer;
  419.   cb, Off: DWORD; Item: HSZ; Fmt, Cmd: UINT): HDDEData; stdcall;
  420.  
  421. {$EXTERNALSYM DdeAddData}
  422. function DdeAddData(Data: HDDEData; Src: Pointer;
  423.   cb, Off: DWORD): HDDEData; stdcall;
  424. {$EXTERNALSYM DdeGetData}
  425. function DdeGetData(Data: HDDEData; Dst: Pointer;
  426.   Max, Off: DWORD): DWORD; stdcall;
  427. {$EXTERNALSYM DdeAccessData}
  428. function DdeAccessData(Data: HDDEData; DataSize: PDWORD): Pointer; stdcall;
  429. {$EXTERNALSYM DdeUnaccessData}
  430. function DdeUnaccessData(Data: HDDEData): BOOL; stdcall;
  431. {$EXTERNALSYM DdeFreeDataHandle}
  432. function DdeFreeDataHandle(Data: HDDEData): BOOL; stdcall;
  433.  
  434. const
  435.   {$EXTERNALSYM HDATA_APPOWNED}
  436.   HDATA_APPOWNED = $0001;
  437.  
  438. {$EXTERNALSYM DdeGetLastError}
  439. function DdeGetLastError(Inst: DWORD): UINT; stdcall;
  440.  
  441. const
  442.   { error codes }
  443.  
  444.   {$EXTERNALSYM DMLERR_NO_ERROR}
  445.   DMLERR_NO_ERROR = 0;       { must be 0 }
  446.  
  447.   {$EXTERNALSYM DMLERR_FIRST}
  448.   DMLERR_FIRST = $4000;
  449.  
  450.   {$EXTERNALSYM DMLERR_ADVACKTIMEOUT}
  451.   DMLERR_ADVACKTIMEOUT = $4000;
  452.   {$EXTERNALSYM DMLERR_BUSY}
  453.   DMLERR_BUSY = $4001;
  454.   {$EXTERNALSYM DMLERR_DATAACKTIMEOUT}
  455.   DMLERR_DATAACKTIMEOUT = $4002;
  456.   {$EXTERNALSYM DMLERR_DLL_NOT_INITIALIZED}
  457.   DMLERR_DLL_NOT_INITIALIZED = $4003;
  458.   {$EXTERNALSYM DMLERR_DLL_USAGE}
  459.   DMLERR_DLL_USAGE = $4004;
  460.   {$EXTERNALSYM DMLERR_EXECACKTIMEOUT}
  461.   DMLERR_EXECACKTIMEOUT = $4005;
  462.   {$EXTERNALSYM DMLERR_INVALIDPARAMETER}
  463.   DMLERR_INVALIDPARAMETER = $4006;
  464.   {$EXTERNALSYM DMLERR_LOW_MEMORY}
  465.   DMLERR_LOW_MEMORY = $4007;
  466.   {$EXTERNALSYM DMLERR_MEMORY_ERROR}
  467.   DMLERR_MEMORY_ERROR = $4008;
  468.   {$EXTERNALSYM DMLERR_NOTPROCESSED}
  469.   DMLERR_NOTPROCESSED = $4009;
  470.   {$EXTERNALSYM DMLERR_NO_CONV_ESTABLISHED}
  471.   DMLERR_NO_CONV_ESTABLISHED = $400a;
  472.   {$EXTERNALSYM DMLERR_POKEACKTIMEOUT}
  473.   DMLERR_POKEACKTIMEOUT = $400b;
  474.   {$EXTERNALSYM DMLERR_POSTMSG_FAILED}
  475.   DMLERR_POSTMSG_FAILED = $400c;
  476.   {$EXTERNALSYM DMLERR_REENTRANCY}
  477.   DMLERR_REENTRANCY = $400D;
  478.   {$EXTERNALSYM DMLERR_SERVER_DIED}
  479.   DMLERR_SERVER_DIED = $400E;
  480.   {$EXTERNALSYM DMLERR_SYS_ERROR}
  481.   DMLERR_SYS_ERROR = $400F;
  482.   {$EXTERNALSYM DMLERR_UNADVACKTIMEOUT}
  483.   DMLERR_UNADVACKTIMEOUT = $4010;
  484.   {$EXTERNALSYM DMLERR_UNFOUND_QUEUE_ID}
  485.   DMLERR_UNFOUND_QUEUE_ID = $4011;
  486.  
  487.   {$EXTERNALSYM DMLERR_LAST}
  488.   DMLERR_LAST = $4011;
  489.  
  490. {$EXTERNALSYM DdeCreateStringHandleA}
  491. function DdeCreateStringHandleA(Inst: DWORD; psz: PAnsiChar;
  492.   CodePage: Integer): HSZ; stdcall;
  493. {$EXTERNALSYM DdeCreateStringHandleW}
  494. function DdeCreateStringHandleW(Inst: DWORD; psz: PWideChar;
  495.   CodePage: Integer): HSZ; stdcall;
  496. {$EXTERNALSYM DdeCreateStringHandle}
  497. function DdeCreateStringHandle(Inst: DWORD; psz: PChar;
  498.   CodePage: Integer): HSZ; stdcall;
  499. {$EXTERNALSYM DdeQueryStringA}
  500. function DdeQueryStringA(Inst: DWORD; HSZ: HSZ; psz: PAnsiChar;
  501.   Max: DWORD; CodePage: Integer): DWORD; stdcall;
  502. {$EXTERNALSYM DdeQueryStringW}
  503. function DdeQueryStringW(Inst: DWORD; HSZ: HSZ; psz: PWideChar;
  504.   Max: DWORD; CodePage: Integer): DWORD; stdcall;
  505. {$EXTERNALSYM DdeQueryString}
  506. function DdeQueryString(Inst: DWORD; HSZ: HSZ; psz: PChar;
  507.   Max: DWORD; CodePage: Integer): DWORD; stdcall;
  508. {$EXTERNALSYM DdeFreeStringHandle}
  509. function DdeFreeStringHandle(Inst: DWORD; HSZ: HSZ): BOOL; stdcall;
  510. {$EXTERNALSYM DdeKeepStringHandle}
  511. function DdeKeepStringHandle(Inst: DWORD; HSZ: HSZ): BOOL; stdcall;
  512. {$EXTERNALSYM DdeCmpStringHandles}
  513. function DdeCmpStringHandles(hsz1, hsz2: HSZ): Integer; stdcall;
  514.  
  515. type
  516.   { DDEML public debugging header file info }
  517.  
  518.   {$EXTERNALSYM tagDDEML_MSG_HOOK_DATA}
  519.   tagDDEML_MSG_HOOK_DATA = packed record  { new for NT }
  520.     uiLo: UINT;      { unpacked lo and hi parts of lParam }
  521.     uiHi: UINT;
  522.     cbData: DWORD;   { amount of data in message, if any. May be > than 32 bytes. }
  523.     Data: array [0..7] of DWORD; { data peeking by DDESPY is limited to 32 bytes. }
  524.   end;
  525.   TDdemlMsgHookData = tagDDEML_MSG_HOOK_DATA;
  526.   {$EXTERNALSYM DDEML_MSG_HOOK_DATA}
  527.   DDEML_MSG_HOOK_DATA = tagDDEML_MSG_HOOK_DATA;
  528.  
  529.   {$EXTERNALSYM tagMONMSGSTRUCT}
  530.   tagMONMSGSTRUCT = packed record
  531.     cb: UINT;
  532.     hWndTo: HWND;
  533.     dwTime: DWORD;
  534.     hTask: THandle;
  535.     wMsg: UINT;
  536.     wParam: WPARAM;
  537.     lParam: LPARAM;
  538.     dmhd: TDdemlMsgHookData;
  539.   end;
  540.   TMonMsgStruct = tagMONMSGSTRUCT;
  541.   {$EXTERNALSYM MONMSGSTRUCT}
  542.   MONMSGSTRUCT = tagMONMSGSTRUCT;
  543.  
  544.   {$EXTERNALSYM tagMONCBSTRUCT}
  545.   tagMONCBSTRUCT = packed record
  546.     cb: UINT;
  547.     dwTime: DWORD;
  548.     hTask: THandle;
  549.     dwRet: DWORD;
  550.     wType: UINT;
  551.     wFmt: UINT;
  552.     hConv: HConv;
  553.     hsz1: HSZ;
  554.     hsz2: HSZ;
  555.     hData: HDDEData;
  556.     dwData1: DWORD;
  557.     dwData2: DWORD;
  558.     cc: TConvContext;  { new for NT for XTYP_CONNECT callbacks }
  559.     cbData: DWORD;     { new for NT for data peeking }
  560.     Data: array [0..7] of DWORD; { new for NT for data peeking }
  561.   end;
  562.   TMonCBStruct = tagMONCBSTRUCT;
  563.   {$EXTERNALSYM MONCBSTRUCT}
  564.   MONCBSTRUCT = tagMONCBSTRUCT;
  565.  
  566.   {$EXTERNALSYM tagMONHSZSTRUCTA}
  567.   tagMONHSZSTRUCTA = record
  568.     cb: UINT;
  569.     fsAction: BOOL;    { mh_ value }
  570.     dwTime: DWORD;
  571.     HSZ: HSZ;
  572.     hTask: THandle;
  573.     wReserved: UINT;
  574.     Str: array[0..0] of AnsiChar;
  575.   end;
  576.   {$EXTERNALSYM tagMONHSZSTRUCTW}
  577.   tagMONHSZSTRUCTW = record
  578.     cb: UINT;
  579.     fsAction: BOOL;    { mh_ value }
  580.     dwTime: DWORD;
  581.     HSZ: HSZ;
  582.     hTask: THandle;
  583.     wReserved: UINT;
  584.     Str: array[0..0] of WideChar;
  585.   end;
  586.   {$EXTERNALSYM tagMONHSZSTRUCT}
  587.   tagMONHSZSTRUCT = tagMONHSZSTRUCTA;
  588.   TMonHSZStructA = tagMONHSZSTRUCTA;
  589.   TMonHSZStructW = tagMONHSZSTRUCTW;
  590.   TMonHSZStruct = TMonHSZStructA;
  591.   {$EXTERNALSYM MONHSZSTRUCTA}
  592.   MONHSZSTRUCTA = tagMONHSZSTRUCTA;
  593.   {$EXTERNALSYM MONHSZSTRUCTW}
  594.   MONHSZSTRUCTW = tagMONHSZSTRUCTW;
  595.   {$EXTERNALSYM MONHSZSTRUCT}
  596.   MONHSZSTRUCT = MONHSZSTRUCTA;
  597.  
  598. const
  599.   {$EXTERNALSYM MH_CREATE}
  600.   MH_CREATE = 1;
  601.   {$EXTERNALSYM MH_KEEP}
  602.   MH_KEEP = 2;
  603.   {$EXTERNALSYM MH_DELETE}
  604.   MH_DELETE = 3;
  605.   {$EXTERNALSYM MH_CLEANUP}
  606.   MH_CLEANUP = 4;
  607.  
  608. type
  609.   PMonErrStruct = ^TMonErrStruct;
  610.   {$EXTERNALSYM tagMONERRSTRUCT}
  611.   tagMONERRSTRUCT = packed record
  612.     cb: UINT;
  613.     wLastError: UINT;
  614.     dwTime: DWORD;
  615.     hTask: THandle;
  616.   end;
  617.   TMonErrStruct = tagMONERRSTRUCT;
  618.   {$EXTERNALSYM MONERRSTRUCT}
  619.   MONERRSTRUCT = tagMONERRSTRUCT;
  620.  
  621.   PMonLinkStruct = ^TMonLinkStruct;
  622.   {$EXTERNALSYM tagMONLINKSTRUCT}
  623.   tagMONLINKSTRUCT = packed record
  624.     cb: UINT;
  625.     dwTime: DWORD;
  626.     hTask: THandle;
  627.     fEstablished: BOOL;
  628.     fNoData: BOOL;
  629.     hszSvc: HSz;
  630.     hszTopic: HSz;
  631.     hszItem: HSz;
  632.     wFmt: UINT;
  633.     fServer: BOOL;
  634.     hConvServer: HConv;
  635.     hConvClient: HConv;
  636.   end;
  637.   TMonLinkStruct = tagMONLINKSTRUCT;
  638.   {$EXTERNALSYM MONLINKSTRUCT}
  639.   MONLINKSTRUCT = tagMONLINKSTRUCT;
  640.  
  641.   PMonConvStruct = ^TMonConvStruct;
  642.   {$EXTERNALSYM tagMONCONVSTRUCT}
  643.   tagMONCONVSTRUCT = packed record
  644.     cb: UINT;
  645.     fConnect: BOOL;
  646.     dwTime: DWORD;
  647.     hTask: THandle;
  648.     hszSvc: HSz;
  649.     hszTopic: HSz;
  650.     hConvClient: HConv;
  651.     hConvServer: HConv;
  652.   end;
  653.   TMonConvStruct = tagMONCONVSTRUCT;
  654.   {$EXTERNALSYM MONCONVSTRUCT}
  655.   MONCONVSTRUCT = tagMONCONVSTRUCT;
  656.  
  657. const
  658.   {$EXTERNALSYM MAX_MONITORS}
  659.   MAX_MONITORS = 4;
  660.   {$EXTERNALSYM APPCLASS_MONITOR}
  661.   APPCLASS_MONITOR = 1;
  662.   {$EXTERNALSYM XTYP_MONITOR}
  663.   XTYP_MONITOR = $00F0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK;
  664.  
  665. { Callback filter flags for use with MONITOR apps - 0 implies no monitor
  666.   callbacks. }
  667.  
  668. const
  669.   {$EXTERNALSYM MF_HSZ_INFO}
  670.   MF_HSZ_INFO = $01000000;
  671.   {$EXTERNALSYM MF_SENDMSGS}
  672.   MF_SENDMSGS = $02000000;
  673.   {$EXTERNALSYM MF_POSTMSGS}
  674.   MF_POSTMSGS = $04000000;
  675.   {$EXTERNALSYM MF_CALLBACKS}
  676.   MF_CALLBACKS = $08000000;
  677.   {$EXTERNALSYM MF_ERRORS}
  678.   MF_ERRORS = $10000000;
  679.   {$EXTERNALSYM MF_LINKS}
  680.   MF_LINKS = $20000000;
  681.   {$EXTERNALSYM MF_CONV}
  682.   MF_CONV = $40000000;
  683.  
  684.  
  685.   ddelib = 'user32.dll';
  686.  
  687. implementation
  688.  
  689. {$EXTERNALSYM DdeInitializeA}
  690. function DdeInitializeA;         external ddelib name 'DdeInitializeA';
  691. {$EXTERNALSYM DdeInitializeW}
  692. function DdeInitializeW;         external ddelib name 'DdeInitializeW';
  693. {$EXTERNALSYM DdeInitialize}
  694. function DdeInitialize;         external ddelib name 'DdeInitializeA';
  695. {$EXTERNALSYM DdeUninitialize}
  696. function DdeUninitialize;          external ddelib name 'DdeUninitialize';
  697. {$EXTERNALSYM DdeConnectList}
  698. function DdeConnectList;           external ddelib name 'DdeConnectList';
  699. {$EXTERNALSYM DdeQueryNextServer}
  700. function DdeQueryNextServer;       external ddelib name 'DdeQueryNextServer';
  701. {$EXTERNALSYM DdeDisconnectList}
  702. function DdeDisconnectList;        external ddelib name 'DdeDisconnectList';
  703. {$EXTERNALSYM DdeConnect}
  704. function DdeConnect;               external ddelib name 'DdeConnect';
  705. {$EXTERNALSYM DdeDisconnect}
  706. function DdeDisconnect;            external ddelib name 'DdeDisconnect';
  707. {$EXTERNALSYM DdeReconnect}
  708. function DdeReconnect;             external ddelib name 'DdeReconnect';
  709. {$EXTERNALSYM DdeQueryConvInfo}
  710. function DdeQueryConvInfo;         external ddelib name 'DdeQueryConvInfo';
  711. {$EXTERNALSYM DdeSetUserHandle}
  712. function DdeSetUserHandle;         external ddelib name 'DdeSetUserHandle';
  713. {$EXTERNALSYM DdeAbandonTransaction}
  714. function DdeAbandonTransaction;    external ddelib name 'DdeAbandonTransaction';
  715. {$EXTERNALSYM DdePostAdvise}
  716. function DdePostAdvise;            external ddelib name 'DdePostAdvise';
  717. {$EXTERNALSYM DdeEnableCallback}
  718. function DdeEnableCallback;        external ddelib name 'DdeEnableCallback';
  719. {$EXTERNALSYM DdeNameService}
  720. function DdeNameService;           external ddelib name 'DdeNameService';
  721. {$EXTERNALSYM DdeClientTransaction}
  722. function DdeClientTransaction;     external ddelib name 'DdeClientTransaction';
  723. {$EXTERNALSYM DdeCreateDataHandle}
  724. function DdeCreateDataHandle;      external ddelib name 'DdeCreateDataHandle';
  725. {$EXTERNALSYM DdeAddData}
  726. function DdeAddData;               external ddelib name 'DdeAddData';
  727. {$EXTERNALSYM DdeGetData}
  728. function DdeGetData;               external ddelib name 'DdeGetData';
  729. {$EXTERNALSYM DdeAccessData}
  730. function DdeAccessData;            external ddelib name 'DdeAccessData';
  731. {$EXTERNALSYM DdeUnaccessData}
  732. function DdeUnaccessData;          external ddelib name 'DdeUnaccessData';
  733. {$EXTERNALSYM DdeFreeDataHandle}
  734. function DdeFreeDataHandle;        external ddelib name 'DdeFreeDataHandle';
  735. {$EXTERNALSYM DdeGetLastError}
  736. function DdeGetLastError;          external ddelib name 'DdeGetLastError';
  737. {$EXTERNALSYM DdeCreateStringHandleA}
  738. function DdeCreateStringHandleA; external ddelib name 'DdeCreateStringHandleA';
  739. {$EXTERNALSYM DdeCreateStringHandleW}
  740. function DdeCreateStringHandleW; external ddelib name 'DdeCreateStringHandleW';
  741. {$EXTERNALSYM DdeCreateStringHandle}
  742. function DdeCreateStringHandle; external ddelib name 'DdeCreateStringHandleA';
  743. {$EXTERNALSYM DdeQueryStringA}
  744. function DdeQueryStringA;        external ddelib name 'DdeQueryStringA';
  745. {$EXTERNALSYM DdeQueryStringW}
  746. function DdeQueryStringW;        external ddelib name 'DdeQueryStringW';
  747. {$EXTERNALSYM DdeQueryString}
  748. function DdeQueryString;        external ddelib name 'DdeQueryStringA';
  749. {$EXTERNALSYM DdeFreeStringHandle}
  750. function DdeFreeStringHandle;      external ddelib name 'DdeFreeStringHandle';
  751. {$EXTERNALSYM DdeKeepStringHandle}
  752. function DdeKeepStringHandle;      external ddelib name 'DdeKeepStringHandle';
  753. {$EXTERNALSYM DdeCmpStringHandles}
  754. function DdeCmpStringHandles;      external ddelib name 'DdeCmpStringHandles';
  755.  
  756. end.
  757.